The present invention relates to a system and method for constructing and using models for computer animations. More specifically, the present invention relates to constructing and using generalized skeletons in models for computer animations, the models comprising one or more skeletons to which envelopes can be associated.
One of the types of objects which is commonly desired to be animated in a computer animation system are animals and/or humans. To animate such objects, and many others, the animation artist will construct an animation model, which can be animated by inverse kinematics, forward kinematics, dynamics, and/or other procedures, and the rendering engine of the animation system will use this model to render the animation as required.
In the V3.0 and earlier versions of the SOFTIMAGE|3D product sold by the assignee of the present invention, such animation models are constructed of skeletons which comprise a hierarchy of one or more articulated chains to which the vertices of one or more envelopes can subsequently be assigned to. In general, the skeletons define the types and ranges of movement of the model. In V3.0 of SOFTIMAGE|3D, a human animation model can be constructed from a skeleton comprising a hierarchy of articulated chains, each of which models a limb, torso, or other features, which are connected at articulation points.
The skeleton is not rendered in the rendering engine of the animation system and is thus not directly visible in the output of the animation system. Instead, in V3.0 of SOFTIMAGE|3D the skeleton can have one or more envelopes associated with it and these envelopes are rendered and result in the visual appearance of the model produced by the rendering engine of the animation system.
Generally, there are two types of envelopes which are employed with skeletons, rigid envelopes and flexible envelopes. Rigid envelopes move with the skeleton, but the shape of the rigid envelope does not deform as the skeleton is moved. In contrast, flexible envelopes act much like skin, moving and deforming with the elements in the skeleton as the chains therein are animated using forward or inverse kinematics, etc. Such animation models can be employed to animate humans, other bipeds, quadrupeds, etc. including animals, dinosaurs, etc. and various objects. This type of technique was, for example, used to animate the Tyrannosaurus Rex in the film Jurassic Park.
In the above-mentioned SOFTIMAGE|3D product, each articulated chain used to construct a skeleton is a hierarchy of elements comprising a root, one or more joints and an end effector, each element being spaced at a fixed distance from the preceding and/or subsequent element in the chain. In a similar manner, the skeleton itself comprises a hierarchy of these articulated chains. For example, the skeleton hierarchy for a human model can include a root (highest level entry) from which a chain representing a torso depends and a chain representing an arm can depend from an element of the torso and a chain representing a hand can depend from the end effector of the chain representing the arm.
The joint elements in the chain define the articulation points of the chain, both in terms of their location and their articulation capabilities. For example, in a chain for a human arm, a joint representing an elbow can be located approximately half way between the root and the end effector and may be defined to allow pivoting in a limited range within a 2D plane to mimic the range of movement of a human elbow.
The end effector is the last point in a chain hierarchy and the end effector is manipulated for forward and inverse kinematic purposes. The end effector of one chain can be defined as the parent of the root of another chain. In the example of the human skeleton mentioned above, the end effector of the chain representing a human arm can be defined as the parent of the root element of a chain representing a human hand, and thus the hand will move with the arm as the arm is animated.
As also mentioned above, envelopes are assigned to the skeleton to provide the desired visual volume of the animated character or object. A flexible envelope essentially is a volume defined by a series of vertices which are associated with a chain, two or more chains or an entire skeleton and which moves and/or deforms as the associated chain elements are moved. Thus, the skeleton and chains used to model the Tyrannosaurus Rex in Jurassic Park are not visible to the film""s audience, who instead see only the flexible envelope xe2x80x9cskinxe2x80x9d of the dinosaur which deforms and moves as the skeleton of the dinosaur model is animated.
As is known, the assignment of the vertices of flexible envelopes to chain elements can be either exclusive (i.e. a vertex is assigned to a single chain element) or weighted to two or more elements (i.e. a vertex is assigned to a first chain element with a 60% weighting and a second chain element with a 40% weighting).
This arrangement has proven to be an acceptable technique for many models. However, in animating models or portions of models which require greater local control, such as the local control required to model the bulge of a flexing biceps muscle or the movement of a human face, the necessary local control can be difficult to obtain.
Also, while for simple models or portions of models, such as limbs, the flexible envelope can be a simple geometric volume such as a tube, in modelling more complex objects, such as hands, feet and faces, the envelopes themselves can become more complex, both in shape and in the number of vertices, and often require great effort on the part of the animation artist to provide the necessary level of control of the envelope""s deformation.
Further, the construction of an articulated chain for these more complex portions of a model is much more difficult. For example, to ensure that the flexible envelope realistically deforms to animate a human smile, the portion of a model representing a human face can require many tens of chain elements to be located within a relatively small volume. For such complex models, defining a skeleton of articulated chains with the requisite number of elements to provide the desired level of control is, at best, onerous and, at worst, impossible.
Specifically, the structure of articulated chains impose limitations in that each element in the chain is dependent, by definition, on other elements in the chain and therefore elements cannot be independently transformed by scaling, rotation and/or translation. Thus, for example, translating a joint representing the elbow in a chain which models an arm results in movement of the end effector of the chain (i.e. the elbow cannot be moved up and down the fore arm). There are also explicit and implicit constraints controlling the behaviour of the chain, such as the orientation of the elements and the requirement that the spacing between elements has a fixed length that cannot be changed relative to the preceding and/or subsequent element.
Accordingly, in the past the desired level of control in complex models such as a human face has been provided, at least in part, by xe2x80x9cdummyxe2x80x9d chains which are linked to the hierarchy of the skeleton. These xe2x80x9cdummyxe2x80x9d chains are commonly used to isolate some parts of the skeleton and/or to add a level of local control at specific points relative to the skeleton. However, while the inclusion of such xe2x80x9cdummyxe2x80x9d chains in a skeleton can provide an enhanced level of control, the result is cumbersome to use and to construct and is still limited in its capabilities.
It is desired to have a method of constructing and using animation models which includes the utility of skeletons, but which avoids at least some of the disadvantages and/or limitation of skeletons of articulated chains
It is an object of the present invention to provide a novel system and method for constructing and using a skeleton for an animation model which obviates or mitigates at least one of the disadvantages of the prior art systems.
According to one aspect of the invention, there is provided a method of constructing a generalized skeleton for an animation model, comprising the steps of:
(i) defining a set of at least two elements to be included in said skeleton, said set including at least one non-chain element;
(ii) arranging said set of elements into a skeleton hierarchy; and
(iii) defining for each said element in said set relational information and/or mathematical relationships between said element and at least one other element in said set.
According to another aspect of the invention, there is provided a method of constructing an animation model including a skeleton and at least one envelope, comprising the steps of:
(i) defining a set of at least two elements to be included in said skeleton, at least one element of said set being a non-chain element;
(ii) arranging said set of elements into a skeleton hierarchy;
(iii) defining for each element in said set information comprising a relational and/or mathematical relationship between said element and at least one other element in said set;
(iv) selecting at least one envelope for use with said skeleton; and
(v) assigning the vertices of said at least one envelope to at least one element in said set.
According to yet another aspect of the invention, there is provided an animation system comprising:
element input means to allow a user to define a set of elements including at least one non-chain element;
hierarchical input means to allow said user to arrange said set of elements into a skeleton hierarchy;
relational input means to allow said user to define relational information and/or mathematical relationships for each element in said set;
envelope input means to allow said user to assign vertices of at least one envelope to elements in said set;
animation means to move said skeleton elements; and
rendering means to render images of said at least one envelope.